package com.albaba.designpattern.beans.support;


import com.albaba.designpattern.beans.BeanDefinition;
import org.springframework.beans.factory.BeanDefinitionStoreException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;

/**
 * @Description: TODO
 * @Author zx
 * @Date 2025/3/8 16:57
 * @Version 1.0
 */
public interface BeanDefinitionRegistry {

    // 注册 BeanDefinition 对象到注册表
    void registerBeanDefinition(String beanName, BeanDefinition beanDefinition)
            throws BeanDefinitionStoreException;


    // 从注册表中移除 BeanDefinition 对象
    void removeBeanDefinition(String beanName) throws NoSuchBeanDefinitionException;


    // 根据 Bean 名称获取 BeanDefinition 对象
    BeanDefinition getBeanDefinition(String beanName) throws NoSuchBeanDefinitionException;


    // 判断注册表中是否存在指定名称的 BeanDefinition 对象
    boolean containsBeanDefinition(String beanName);


    // 返回注册表中所有 BeanDefinition 对象的名称
    String[] getBeanDefinitionNames();


    // 返回注册表中 BeanDefinition 对象的数量
    int getBeanDefinitionCount();

}
